package com.java.yz.day12.ketang;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
    V get(Object key)
    Set<K> keySet()
    Collection<V> values()
    Set<Map.Entry<K,V>> entrySet()

    方式1：根据键找值
        获取所有键的集合
        遍历键的集合，获取到每一个键
        根据键找值

    方式2：根据键值对对象找键和值
        获取所有键值对对象的集合
        遍历键值对对象的集合，获取到每一个键值对对象
        根据键值对对象找键和值


 */
public class MapDemo3 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map1 =new HashMap<>();
        //添加集合元素
        map1.put("柳宗元","看诗");
        map1.put("李清照","读诗");
        map1.put("白居易","想诗");
        map1.put("杜甫","吟诗");
        map1.put("李白","写诗");

        //V get(Object key)  /通过键来返回值
        map1.get("李白");
        System.out.println(map1);

        //第一种遍历方式
        //Set<K> keySet() 因为键是唯一的，所以用Set集合来存放
        System.out.println(map1.keySet());  //返回所有的键[李清照, 白居易, 杜甫, 李白, 柳宗元]
        Set<String> strings = map1.keySet();
        for (String string : strings) {
            System.out.println(string+"---"+map1.get(string));
        }

        //Collection<V> values() 因为值不是唯一的，所以用Collection集合来存放
        System.out.println(map1.values()); //[读诗, 想诗, 吟诗, 写诗, 看诗]
        //这样子是遍历
        Collection<String> values = map1.values();
        for (String value : values) {
            System.out.println(value);
        }

        //第二中遍历方式
        //Set<Map.Entry<K,V>> entrySet()  //通过键值对的方法来遍历集合
        Set<Map.Entry<String, String>> entries = map1.entrySet();
        for (Map.Entry<String, String> entry : entries) { //通过键值对的方式进行遍历
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"==="+value);
        }


    }
}
